WDLLFnd Help Contents

WDLLFnd Version 1.32

Copyright © 1995, William J. Dowling

Windows DLL Find and Report

By:	Treeless Software and Design	CIS: 71210,2033
82 Whispering Drive	Prodigy: MPHB71A
Streamwood,  IL  60107-2302	America Online: TreelessSW
Voice & BBS: 708/372-0825	Fax: 708/372-0059
Internet: TreelessSW@aol.com

WDLLFnd is a Windows utility that searches your disk drives and locates Windows executable programs (EXEs) and common routines (DLLs, DRVs, and VBXs). These common routines were designed so that only one copy is needed in your computers memory, but more than one program can access the routine at the same time. This not only saves on memory (if five programs need a routine, such as your screen driver, that routine is loaded into memory only once not five times), and also if a DLL is modified you only need to reload the new DLL not every program that uses it.

After WDLLFnd performs the disk search, it will display three lists, a Filename List, a DLL List, and a Exception List.

Important Information for you to read. Please read this before you decide to delete any files or programs from your computer.

Program Commands is the list of commands that you use to execute WDLLFnd.

WDLLFND.INI is the configuration information that tells WDLLFnd what to do and how to do it when it executes.

Registration Information and Legal Information, use this information to tell you how and where to register your copy of WDLLFnd and to tell you that you cant sue us if you make a mistake.

Recent Changes to the WDLLFnd system.

List of Files distributed with the WDLLFnd system.

Memory Requirements needed by WDLLFnd.


A file with a EXE extension is an executable program file.


A file with a DLL extension is a common executable routine more commonly known as a Dynamic Link Library.


A file with a DRV extension is a common executable routine most commonly used as device drivers. Each unique piece of hardware has a device driver that allows it to operate correctly within the Windows environment.


A file with a VBX extension is a common executable routine most commonly used by Visual Basic programs and is more commonly known as a Visual Basic Extension.


A list of every program and common routine found during the search. This list includes the filename, internal product version, internal file version, date and time last modified, file length in bytes, and the directory where it is stored. Double-clicking on a list item will display the common routines that are called by this program. A counter is also displayed that gives the number of programs and common routines in the list box.


A list of every DLL that is referenced by another program or common routine. Double-clicking on a list item will display a list of all programs or common routines that reference this DLL. A counter is also displayed that gives the number of DLLs in the list box.


A list of every error or Exception that was found (depending on which options were set). Double-clicking on a list item will try and find the program or common routine in the Filename and DLL lists. There are three types of discrepancies reported on. The first Exception reported on is for duplicate program and routine names. The second is on DLLs that are found during the search but do not appear to be referenced by any other program or routine. And the third Exception reported on is DLLs that are referenced by other programs or routines but the DLL routine could not be located. A counter is also displayed that gives the number of exceptions in the list box.


List of Distribution Files

The following is a list of files that should be distributed with the WDLLFnd system.

WDLLFND.EXE	The WDLLFnd program.

WDLLFND.ICO	ICON file for the WDLLFnd program.

WDLLFND.HLP	This file.

TLSDLLS.DLL	Miscellaneous routines for Treeless Software and Design programs.

FILE_ID.DIZ	Brief description for bulletin boards.

Since this program was written in Visual Basic (VB) you will also need the Microsoft Visual Basic runtime routines contained in VBRUN300.DLL. You should be able to download this routine from the BBS that WDLLFnd was loaded from or in the Microsoft Basic Forum (GO MSBASIC) found on CompuServe.


Legal Jargon

Users of WDLLFnd must accept this disclaimer of warranty: WDLLFnd is supplied AS IS. The author disclaims all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The author assumes no liability for damages, direct or consequential, which may result from the use of WDLLFnd.

WDLLFnd is a SHAREWARE PROGRAM and is provided at no charge to the user for evaluation. Feel free to share it with your friends, but please do not give it away altered or as part of another system. The essence of Shareware Software is to provide personal computer users with quality software without high prices, and yet to provide incentive for programmers to continue to develop new products. If you find this program useful, and find that you are using WDLLFnd and continue to use WDLLFnd after a 10 day trial period, you must send your Name, Address, which BBS you retrieved WDLLFnd from and a registration payment of $10.00 (US$), plus $3.50 (North America) or $7.00 (elsewhere in the world) for postage and handling if you wish the most current version of WDLLFnd sent to you. Send this payment to:

Treeless Software and Design

82 Whispering Drive

Streamwood, IL 60107-2302 (USA)

Voice & BBS: 708/372-0825

Fax: 708/372-0059

Internet: TreelessSW@aol.com

The $10 registration fee will license one copy of WDLLFnd for use on any one computer at any one time. After your registration form and fee is received, you will be sent a serial number to enter into the registration dialog routine. You are encouraged to pass a copy of WDLLFnd along to your friends for evaluation. Please encourage them to register their copy if they find WDLLFnd useful.


Recent Changes

Version 1.00 on 08/22/94 Registration fee of $5.00;

·	Initial release of the program.

Version 1.10 on 11/04/94 Registration fee of $10.00;

·	Reformatted appearance to a more standard Windows Menu style display.

·	Multiple directory search capabilities.

·	Printer configuration and font selection.

·	Expanded types of printed reports.

·	Created this help file instead of using WRITE help file.

Version 1.20 on 01/20/95 Registration fee of $10.00;

·	bug fix; program crashed if screen font not available. If Arial font is not available then set system font MS San Serif as default.

·	New registration procedures.

·	Options for type of Exceptions shown (Ctrl+E) and printed (Ctrl+T) have been moved to Dialog boxes instead of being set on the Options menu.

·	More and better error handling.

Version 1.21 on 01/26/95 Registration fee of $10.00;

·	Minor change in the registration procedure.

·	More error handling.

Version 1.30 on 02/15/95 Registration fee of $10.00;

·	The ability to Save (Ctrl+S) the current DLL search and Open (Ctrl+O) prior DLL searches for use at a later time.

·	Change Start New Search quick key command to (Ctrl+N).

·	Show line/record counts for all list boxes.

Version 1.31 on 03/30/95 Registration fee of $10.00;

·	Updated TLSDLLS.DLL to handle international registration problems.

·	INI file search now handles multiple definitions on one line.

Version 1.32 on 06/02/95 Registration fee of $10.00.

·	Updated TLSDLLS.DLL to handle international registration problems.

·	Misc changes.


Initialization File

The WDLLFND.INI file (found in the same directory as the program) contains the following initiation parameters that help configure how the program is run.

[WDLLFND]

STARTDIR=C:\	Directory to start the search.

ALLHARDDRIVES=FALSE	Search all hard disk drives?

DUPFILE=TRUE	Report on duplicate files.

NOTFOUND=TRUE	Report on DLLs referenced but not found.

NOTREFERENCED=TRUE	Report on DLLs found but not referenced.

SCANINI=TRUE	Report on INI file definitions.

PRINTERR=4	Printed report type [0-4].

PRINTFONT=Arial	Font Name to use on printed reports.

PRINTSIZE=10	Font Size to use on printed reports.


A dialog box will open and ask you to input the name of a file that the current WDLLFnd DLL search will be saved in. This file can then be used at a later time to continue your DLL investigation.


A dialog box will open and ask you to input the name of a prior WDLLFnd DLL search. This prior search will replace any existing information currently being displayed.


Program Commands

These commands are available from the menu

Menu Command	Shortcut Key

FILE

Open Prior DLL Search	Ctrl+O

Save Current DLL Search	Ctrl+S

Start New Search	Ctrl+N

Choose Search Directory	Ctrl+D

Choose Multiple Directories	Ctrl+M

Print	Ctrl+P

Printer Setup

Printer Font Setup

Exit	Ctrl+X

OPTIONS

Exception Reporting Options	Ctrl+E

Exception Print Options	Ctrl+T

All Fixed Hard drives Searched	Ctrl+H

HELP

Contents	F1

About


Exception Reporting Options

The following check box options are displayed from the Ctrl+E command. Any or all of these options can be set and will result in different information being displayed on the Exceptions List Box.

Duplicate Programs and DLLs

DLL Found but Not Referenced

DLL Referenced but Not Found

DLL Defined in INI Files


Exception Print Options

The following bullet options are displayed from the Ctrl+T command. Only one of these options can be selected at one time, and will result in a specific report to be printed when the Ctrl+P command is issued.

Print Filename List

Print Filename List with DLLs

Print DLL in Use List

Print DLL in Use List with EXEs

Print Exception List


This command will start a new search of the selected disk drives for EXE, DLL, DRV and VBX files. These files are then explored to see if they call common routines.


This command will ask you to select the starting disk directory that WDLLFnd will start the search from. Choose the drive and directory you want to start the search from and click on OK.


This command will ask you to select any combination of disk drives to search that you have access to. Choose the disk drives you want included in the search and then click on OK.


This command will generate a printed report depending on the Exception Print Option selected below.


This command will allow you to change the default printer that will be used to generate the printed report.


This command will allow you to change the FONTNAME and FONTSIZE used while generating the printed report.


This command will cause WDLLFnd to terminate.


Click on this option if you want to include Duplicate Program Names in the Exception report.


Click on this option if you want to include in the Exception report a list of all common routines (DLL) found but not referenced by any programs.


Click on this option if you want to include in the Exception report a list of all common routines referenced by a program but the common routine (DLL) was not found.


Click on this option if you want to include in the Exception report a list of programs and common routines (DLL) defined or clarified in configuration files (INI).


Click on this option if you want the PRINT command to list all programs and their version information.


Click on this option if you want the PRINT command to list all programs and their version information along with all common routines it access.


Click on this option if you want the PRINT command to list all common routines (DLL) that are referenced by other programs.


Click on this option if you want the PRINT command to list all common routines (DLL) that are referenced by other programs along with a list of the programs that reference that routine.


Click on this option if you want the PRINT command to list the Exception report.


This command will select all hard disk drives to be included in the file search.


This command will display this help file.


This command will give you information about this program and your windows environment. Also, our name and address will be displayed if more information is requested.


Important information before deleting files

Make sure that you just dont delete any files that are listed as not being referenced. There are instances that will cause a common routine (DLL) to be listed as being found on your disk system but never being referenced by a program.

Every program has an area in it called the Imported Names Table that contains a list of external modules and procedures (DLLs) that are needed for the program to operate correctly. This table is created when the program is compiled and linked, and helps the operating system identify the external common routines (DLLs) needed by the program. Some programs, such as VB, do not save their called routine names in the Imported Names Table, but instead save the information in their own non-standard formatted tables. Because of these non-standard name tables, there will be programs that WDLLFnd will not be able to locate calls to common routines. So just because the program says a common routine (DLL) is not referenced, it might be called by a non-standard call. So, please please please, make sure you really do not need a DLL before you delete it.

Visual Basic (VB) programs do not reference common routines (DLLs, VBXs) through standard registration and API calls. Because of this, WDLLFnd will show that a VB program only calls its own runtime routines (VBRUN100, 200, or 300). This is something we are looking into, and hopefully someday we will be able to locate module and procedure calls.

As always, please make sure you make a backup copy of any file that you decide to delete, just in case down the road you find out you really need it.

The Shareware Software program WDLLFnd written by Treeless Software and Design was not originally designed or written to be a Windows UnInstaller. Its intended purpose was to locate and report potential problems or exceptions that usually exist within most users Windows systems. WDLLFnd was also not intended to be used only by highly technical Windows users, but unfortunately the use and understanding of how Windows works can be confusing at times even to those who think they know what is going on. With the ever increasing number of Shareware or Freeware programs that users load onto their disk systems to evaluate and later delete (because the program was not needed), there seemed to us at Treeless Software and Design a need for a program that would help locate program stragglers and duplications. These stragglers and duplications occur because most programs come with their own copy of common routines (DLLs) that are needed by that program. Sometimes these programs put the DLLs in their own file directory, sometimes in the WINDOWS\SYSTEM directory, and sometimes in very obscure places.

What is a DLL? Which DLL should the program use? Which DLL does the program use? Which DLL is the most current? Can I delete a DLL if it is a duplicate or never referenced? These are some of the questions most people have concerning the common routines on their computers. Some of these questions are easy to answer, but some of the answers can only be the result of trial and error or an educated guess. We will try to answer some of the basic questions that you might have.

What is a DLL? A DLL (Dynamic Link Library) is just a collection of program coding that can be shared by multiple Windows programs. A good example is WDLLFnd and other programs written in Microsoft Visual Basic. If a VB program needed to include all coding that was necessary for it to execute properly, then each program would be huge. Instead, the code needed to perform the common things such as screen handling, message processing, etc., that every VB program needs is put in the VBRUN300 DLL. This reduces the size of the program, reduces the amount of memory needed to execute multiple programs simultaneously (since the DLL is loaded into memory only once and shared among all programs), and simplifies upgrading programs that use a revised DLL. Other common routines that exist in your Windows system have the file extensions of DRV (drivers used by all programs to handle your device dependent equipment such as your video, disk drive, printer, etc.) and VBX (Visual Basic Extensions). Windows will always look in the WINDOWS\SYSTEM directory when it is trying to locate a common routine. Most software packages will try to adhere to the standard of putting the common routines in the WINDOWS\SYSTEM directory, but there might be specific reasons why they will place them in another directory. If there are a large number of DLLs, the software package might not want to clutter up the system directory. The program might be coded to look in a specific directory and if a common routine is not found there, it will not execute properly.

Which DLL should the program use? Which DLL does the program use? Windows has a search priority it uses when it tries to load a program, common routine or miscellaneous file. Windows will first look in the directory the program was loaded from. If Windows can not locate the routine there, it will then search the WINDOWS directory, then the WINDOWS\SYSTEM directory, and if Windows still can not locate what is needed it will search the DOS PATH directory parameter. As to which DLL a program should use could be different for each instance. Most program authors try to make an updated version of a program or DLL upwards compatible, meaning that you should be able to use the new DLL with the older program but a new program might not always work with an older DLL. So, usually the newest version of a program or DLL is the version you should keep if there are duplicates. But keep in mind that some programs might require a specific version of a common routine for it to operate properly. If this is true, then you would need to keep both versions of that common routine.

Which DLL is the most current? This can usually be determined by the date and time stamp of the program. Some programs and common routines also include an internal version information table that can be examined to reveal the product and file version numbers. All of this information (date, time, version numbers) is displayed by WDLLFnd for each program found.

Can I delete a DLL if it is a duplicate or never referenced? Now we get to the hard part. As described above, there might be instances in which you need to keep different versions of programs or common routines. Plus, there are two types of duplicates. The first type is the same program or routine with two different version numbers. This could happen if you update a software product and the old routines are not deleted by the new version. The second type is when there are two or more copies of the same version of a program or routine. For the most part, if there is a duplicate program or common routine with different version numbers, you should be able to remove all but the most current version. But (again I need to repeating this), some programs might require a specific version of a DLL to operate properly. You will need to do a little experimenting to determine if a DLL or group of DLLs are not needed. If you have two or more copies of the same version of a common routine, it depends on where the DLL is stored on your disk. As described above, there is a specific search path that Windows uses to find a routine it needs to load. The standard location to save a common routine is in the WINDOWS\SYSTEM directory. So, if you have same version number duplicates of a common routine, try moving one copy of that routine to the WINDOWS\SYSTEM directory and remove all other copies. In most cases, this should work. Built in delete was not included in WDLLFnd because we wanted the user to think about a file before deleting it. If WDLLFnd was capable of deleting files, there would be the tendency of inexperienced Windows users to do massive purges of files that might actually be needed.

Please make sure that you just dont delete any files that are listed as never being referenced. There are instances that will cause a common routine (DLL) to be listed as being found on your disk system but never being referenced by a program. Every program has an area in it called the Imported Names Table that contains a list of external modules and procedures (DLLs) that are needed for the program to operate correctly. This table is created when the program is compiled and linked by the author, and helps the operating system identify the external common routines (DLLs) needed by the program. Some programs, such as those written in Visual Basic, do not save their called routine names in the Imported Names Table, but instead save the information in their own non-standard tables. Because of these non-standard name tables, there will be programs that WDLLFnd will not be able to locate calls to common routines. So just because the program says a common routine (DLL) is not referenced, it might be called by a non-standard procedure. So, please, make sure you really do not need a DLL before you delete it. Unfortunately, there is absolutely no way the program can say, Yes, this routine is never used by any program so it is OK to delete it. All WDLLFnd can say is I can not find any obvious reference to this DLL, so please look into it some more before you get rid of it. We wish there was more we could do to resolve the Not Referenced exception, but for the present all we can do is advise you of this exception.

Should I backup a file before I delete it? Yes, Yes, and again Yes. This can be done in a number of ways. A backup program is the best approach to saving copies of files you are thinking of deleting. Microsoft includes a Windows backup program (DOS 6.0 or higher) that can usually be found in the DOS directory and can be launched through the File Manager by issuing the Tools|Backup command. Third party backup software also exist that can also be used to easily make copies of files that you are thinking of deleting. Please refer to the instructions included with these programs for the procedures needed to make a copy of individual or groups of files. Another approach is to create a new directory on your disk and move or copy the files into that new directory. Please refer to the help file included with the File Manager for the procedures needed to create directories and how to move or copy files.

And now a word from our overpaid and never used legal consultants:

Users of WDLLFnd must accept this disclaimer of warranty: WDLLFnd is supplied AS IS. The author disclaims all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The author assumes no liability for damages, direct or consequential, which may result from the use of WDLLFnd.

Now that that is said, have fun exploring your Windows System!


Memory and Disk Requirements

When a DLL is referenced in a program or common routine, a memory table is created by WDLLFnd that is later used to cross-reference programs and DLLs. It is possible on extremely large systems for WDLLFnd to run out of memory. If this occurs, try running WDLLFnd by itself within Windows. This might free up enough memory to allow WDLLFnd to successfully run.

The memory requirements are:

Table Name	Size	Definition of Table

SortedByEXE	84	One table element exists for every DLL referenced in each program or common routine found during the search. This table is sorted by the program name. Version information for the program is also contained in this table.

SortedByDLL	48	One table element exists for every DLL referenced in each program or common routine found during the search. This table is sorted by the DLL name.

SortedByINI	100	One table element exists for every common routine defined in a INI configuration file. This table is sorted by the DLL name.

SortedByENT	100	One table element exists for every common routine defined in a INI configuration file. This table is sorted by the entry (program name) that defines where this DLL is used.

So for example, if your search found 150 programs that have a total of 480 common routine references, and found 190 DLL references in configuration (INI) files, your memory needs would be;

SortedByEXE	480	*	84	=	40320

SortedByDLL	480	*	48	=	23040

SortedByINI	190	*	100	=	19000

SortedByENT	190	*	100	=	19000

Total Memory	 	 	 	 	101360

For your program to successfully perform the search, WDLLFnd would need at least 101360 bytes of extra memory to hold the information tables.